← Back to Writing

Voide 33:最近我都用 AI 做了什么

最近因为用 AI 用得比较频繁,想写一篇内容回顾一下最近都用 AI 做了哪些事情,当然,没有高级到可以 vibe coding 出自己的 App,只是借助 AI 的力量解决一些做事过程中的小小痛点。

文章内容会有一些长(和无聊),因为希望尽可能直接把我已经探索好的解决方案列出来,如果你有和我一样的需求,可以直接拿去使用,主要涉及到这几个模块:

  1. 批量调整图片尺寸
  2. 根据字幕批量切割音频
  3. 批量下载网站音频
  4. 设计 obsidian Daily Notes 模板
  5. 设计英语学习绘本

我主要用到的产品是 ChatGPT,Monica 和 Lovart,我的设备主要是 Mac。这些解决方案可能对某些技术大佬来说不值一提,也未必是最简单的,但至少是现阶段我探索出来比较好用的。你也可以参考我和 AI 互动的步骤,摸索适合你自己的解决方案。

文末我会总结一下这个阶段使用 AI 的感受,只对这个部分感兴趣的可以拖到文末。

01 批量调整图片尺寸

问题描述

这个是解决工作过程中的一个小问题,起因是我们要做一个项目,需要配图,图片总共有 167 张,因为我用稿定设计的公众号次图模板制作,尺寸为 500×500,但是我们需要的是 180×180,一张张图片修改尺寸当然不显示。稿定设计的图片编辑平台可以批量调整尺寸,但一次只能调整 40 张,不算特别方便,于是求助 AI。

直接把问题详情发给 AI: ![[Pasted image 20250920164042.png]]

解决方案

AI 给出了三种解决方案,分别是调用 ImageMagick 软件,Python 脚本处理,和直接用预览打开裁切(Mac 专用)。看了一下,感觉预览裁切会比较慢,Python 脚本处理过程容易报错,最终我选择了 ImageMagick 软件。

操作如下:

首先,终端里安装 Homebrew (我现在所有电脑都有,所以我没有这个步骤)。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

第二,终端里用 brew 安装 ImageMagick

brew install imagemagick

第三,终端里打开图片所在文件夹

cd /文件夹路径 #直接把文件拖进来就好

第四,裁切操作,167 张图片大概 2s 完成

mkdir output
magick mogrify -path output -resize "180x180>" *.jpg

过程中可能会有报错,复制给 AI 继续处理即可。

根据字幕批量切割音频

问题描述

这个步骤其实稍微有些复杂,需要花一点时间。起因是我希望能够按句切割雅思真题的音频,可以用来做单词听写或精听。

如果仅靠我自己考虑,我可能觉得用剪映一条条人工处理,这个时间必然是很久的,我不想花这么久时间,于是咨询 AI 可以怎么做。

这个过程耗时很久……因为一开始没有给 AI 说清楚我想要的是自动切割,AI 给出的回复不是我需要的。于是自己去 Google 搜索方案,搜到了我又看不明白,又交给 AI 解释……总之反复了好几次。

最终算是摸索出了最快的一个方案。

解决步骤

首先,拿到剑雅真题的音频,丢到剪映里识别字幕,导出 MP3 和 SRT 字幕文件,命名方式统一。这一步并非必须的,如果你能直接在网上检索到字幕文件也是可以的。当然你也可以问 AI 如果只有音频文本 txt 和音频可以怎么处理(也有解决方案但非常之复杂,不推荐)。

第二,终端里安装 Python 和 ffmpeg

Python 3,用来解析 SRT 并生成切割命令。

安装方式,继续用 homebrew 的方式安装

brew install python

ffmpeg,核心工具,用来按时间切割音频。

brew install ffmpeg

这一步如果报错,就直接把错误复制给 AI 解决

第三,在终端中运行脚本

mkdir -p ~/Desktop/test/cuts
python3 - <<'PY'
import re, os, shlex, subprocess, pathlib
SRT="/Users/zhangying/Desktop/test/17-T1-P1-Line.punctuated.srt"
AUDIO="/Users/zhangying/Desktop/test/17-T1-P1.MP3"
OUT="/Users/zhangying/Desktop/test/cuts"
REENCODE=True  # True 更稳(避免丢前几帧);False 为 -c copy 无损切
pathlib.Path(OUT).mkdir(parents=True, exist_ok=True)

def to_sec(ts):
    h,m,rest=ts.split(":"); s,ms=rest.split(",")
    return int(h)*3600+int(m)*60+int(s)+int(ms)/1000.0

blocks=re.split(r"\n\s*\n", pathlib.Path(SRT).read_text(encoding="utf-8", errors="ignore").strip(), flags=re.M)
segs=[]
for b in blocks:
    lines=[x.strip() for x in b.splitlines() if x.strip()]
    if not lines: continue
    if re.fullmatch(r"\d+", lines[0]): lines=lines[1:]
    if not lines: continue
    m=re.search(r"(\d{2}:\d{2}:\d{2},\d{3})\s*--?>\s*(\d{2}:\d{2}:\d{2},\d{3})", lines[0])
    if not m: continue
    st,en=to_sec(m.group(1)),to_sec(m.group(2))
    txt=" ".join(lines[1:]).strip()
    if en>st: segs.append((st,en,txt))
def slug(s):
    s=re.sub(r"\s+","_",s); s=re.sub(r"[^0-9A-Za-z\u4e00-\u9fff_\-]+","",s)
    return s[:40] or "segment"
for i,(st,en,txt) in enumerate(segs,1):
    name=f"{i:03d}_{slug(txt)}.mp3"; out=os.path.join(OUT,name)
    if REENCODE:
        cmd=f'ffmpeg -hide_banner -loglevel error -ss {st:.3f} -to {en:.3f} -i {shlex.quote(AUDIO)} -c:a libmp3lame -q:a 2 {shlex.quote(out)}'
    else:
        cmd=f'ffmpeg -hide_banner -loglevel error -ss {st:.3f} -to {en:.3f} -i {shlex.quote(AUDIO)} -c copy {shlex.quote(out)}'
    print(cmd); subprocess.check_call(cmd, shell=True)
print("Done ->", OUT)
PY

脚本里前几行有 3 个地方需要根据自己的情况修改, ~/Desktop/test/cuts 改成你自己的文件夹路径。 SRT="/Users/zhangying/Desktop/test/17-T1-P1-Line.punctuated.srt" AUDIO="/Users/zhangying/Desktop/test/17-T1-P1.MP3" OUT="/Users/zhangying/Desktop/test/cuts" 对应分别改成你自己的字幕 SRT 文件路径,音频 AUDIO 文件路径和输出的切割音频保存路径。

最后效果如图,整个过程可能在 10 分钟左右,实际切割音频是 10 秒内,但 AI 识别字幕会比较久。

![[Pasted image 20250920174043.png]]

批量下载网站音频

问题描述

因为在设计一个雅思口语听力知识库,有一章是讲 IPA 音标,其中每个音标会有一个示例单词,希望同时能提供单词音频内容,最终发现最好的方式还是直接从词典网站中下载,但是一个个单词查询再下载显然很慢,于是咨询 AI 找到了这个方法。

这个过程也有些曲折,一开始 AI 并没有办法给出可以批量检索单词并下载音频的网站,而且换了几个问题,它都没法提供,我推测可能是真的没有这样的网站。

于是退而求其次,在 Oxford 在线词典上查询单词,通过查询网页源代码的单词音频 MP3 文件来下载单词音频。

![[Pasted image 20250920180106.png]]

下载了两三个后发现,链接格式几乎是很类似的,于是咨询 AI 是否可以给它单词表,它参考这个链接格式来实现批量下载。

解决步骤

第一步,打开 Oxford 在线词典,查询单词后右键-网页源代码,检索 MP3 即可找到单词的存储链接,将这个链接复制到浏览器后,可以直接下载音频。如果你的单词量很少,可以采用这个方式。

![[Pasted image 20250920180300.png]]

第二步,获取单词表,然后输入到下方脚本 WORDS = 中,将脚本保存为 word_download.py

# word_download.py
import os
import requests

WORDS = ["see", "sit", "bed", "cat", "cup", "car", "hot", "call", "book", "food", "bird", "about"]

BASE = "https://www.oxfordlearnersdictionaries.com/media/english"
VARIANTS = ["uk_pron", "us_pron"]  # 先英音,后美音
SUFFIXES = ["gb_1", "gb_2", "us_1"]  # 兜底顺序

HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36",
    "Referer": "https://www.oxfordlearnersdictionaries.com/"
}

SAVE_DIR = "oxford_audio"
os.makedirs(SAVE_DIR, exist_ok=True)

def pad5(token: str) -> str:
    """把目录名补到 5 个字符,不足用 '_' 填;超过 5 个就截前 5 个。"""
    return (token[:5] + "_" * 5)[:5]

def build_urls(word: str):
    w = word.lower()
    first = w[0]
    first3 = w[:3] if len(w) >= 3 else w  # 第二层目录:前 3 个字符
    third = pad5(w)                        # 第三层目录:补齐到 5 个字符
    stem = f"{w}__"                        # 文件名前缀一般是 单词 + 双下划线

    # 依次尝试:英音路径下的 gb_1 / gb_2,再尝试美音 us_1
    urls = []
    # 英音
    urls.append(f"{BASE}/uk_pron/{first}/{first3}/{third}/{stem}gb_1.mp3")
    urls.append(f"{BASE}/uk_pron/{first}/{first3}/{third}/{stem}gb_2.mp3")
    # 美音
    urls.append(f"{BASE}/us_pron/{first}/{first3}/{third}/{stem}us_1.mp3")
    return urls

def fetch(word: str):
    for url in build_urls(word):
        try:
            r = requests.get(url, headers=HEADERS, timeout=20)
            if r.status_code == 200 and r.content.startswith(b"ID3") or r.headers.get("Content-Type","").startswith("audio"):
                path = os.path.join(SAVE_DIR, f"{word}.mp3")
                with open(path, "wb") as f:
                    f.write(r.content)
                print(f"✅ 下载成功: {word}  ← {url}")
                return True
            else:
                # 有些会 200 但返回 HTML,需要过滤
                print(f"… 尝试失败({r.status_code}): {url}")
        except Exception as e:
            print(f"⚠️ 网络异常: {word} ← {e}")
    print(f"❌ 全部尝试失败: {word}")
    return False

if __name__ == "__main__":
    for w in WORDS:
        fetch(w)

第三步,安装依赖。

pip install requests

第四步,进入脚本所在的文件夹,输入 cd 后直接把脚本所在文件夹拖进终端 cd 后面,回车即可。

第五步,运行脚本(Python 如果没有安装,需要安装一下)。

python word_download.py

最后效果,大概耗时 10 秒左右,可能会有出错的少量单词,再人工下载一下就好。

![[Pasted image 20250920182011.png]]

这个下载步骤同样适用于其他无法直接下载 MP3 的网站,但可能脚本需要调整,在网页源代码拿到有规律的下载链接后,给 AI 帮你调整即可。

设计 obsidian Daily Notes 模板

问题描述

obsidian 有一个 Daily Notes 的功能,平时打开都是一片空白,我想设计一个模板,分成几个模块:今日任务汇总、今日重点任务、今日其他任务、今日 Done List、快速笔记、今日复盘。

先看看效果:

![[Pasted image 20250920182433.png]]

汇总任务中会利用插件的功能自动汇总页面中的任务,日期格式是自动填写的。

这并不是个很复杂的模板,但是对一个 obsidian 新人来说,搞明白要用哪些插件,怎么设计,也会比较花时间,所以我直接问 AI 怎么做,这里用的是 Monica 的 Claude 原型(用 GPT 当然也可以,只是当时我并行的任务很多,所以用了 Monica 更快)

![[Pasted image 20250920182742.png]]

具体的步骤我不赘述,可以自己试试。

让 AI 来帮助你设计的好处是,可以帮你把所有需要安装的插件,具体操作步骤,需要的代码全部列清楚给你,中间如果有报错,直接复制粘贴给 AI 继续优化就行。这个过程远比自己摸索每个插件有什么效果,怎么使用要快得多,而且能更快地感受到 obsidian 的优势在哪里。

设计英语学习绘本

先直接看效果

![[素材/image (2).png]]

这里用到了 GPT 和 Lovart,参考了赛博禅心的提示词(链接:https://mp.weixin.qq.com/s/0uzIl3yN7Nj1Y6S1kPedNw)

解决步骤

第一步,首先让 GPT 给出内容大纲,这部分可能需要不断检查 AI 生成的内容,再优化细节,我最终生成的文本是多轮对话的结果,在此不赘述。

![[Pasted image 20250920184539.png]]

第二步,把 GPT 生成的最终确认的英文教材内容复制到下面提示词中,丢给 lovart,等待生成,结束

你需要生成一个多图笔记,用英文给中国的大学生和职场新人提供英语学习绘本。 英文的词汇难度不应该超过雅思 6 分水平,适合词汇量 5000 左右的中国学生。 

这个长笔记的背景风格为笔记本/手帐,适合手机阅读。 笔记中的文字,都是英文。 笔记主体文字为 36px,图片尺寸为 1242×1660(适合小红书平台),清晰易读。 

图片中需要用 nano-banana 画一些插图,穿插在笔记中,帮助读者更好地理解内容,保持整体风格统一。 插画应为手绘风格、彩色粗铅笔质感,信息量丰富,图中文字均为英文,背景保持为手帐纸张的感觉。 

请生成多张连续的图片来完整表达笔记内容;对于重点内容要加粗;整体配色和谐好看,既有学习感,也有趣味性。 以下为你要生成的内容: 

{ 
这里输入教材内容和图片描述
} 

请生成这个笔记,并在最后给出信息: “这篇文章,完全由 lovart & nano-banana 生成,带来直观的信息表达”

一些粗浅的感受

01 你现在生活中遇到的各种实操型问题,都有可能用 AI 找到解决方案,但前提是,你得有问题。

有些人可能觉得 AI 离自己很遥远,好像没有什么事情是需要 AI 来帮助的,但我想这大概率是因为,整个做事的过程中,那些其实让人不耐受的麻烦的问题,你都自己承受了,并没有意识到这里有什么不对。

比如我列举出来的各种问题,当然有很简单不需要 AI 指导的方式解决,但因为我讨厌麻烦,所以我会想着让 AI 来协助我找新的解决方案,因此我才可以更多地把 AI 用起来。

因此,如果你确实希望更多地开始使用 AI,不需要跟风追求各类新工具新技术,也不需要想着立即冲刺加入 vibe coding 行业,做各种垃圾 App。你只需要关注现在你生活中,还有哪些事,让你有点刺挠,但忍一忍也能做。这些事,或许就是你开始频繁使用 AI 的契机。

02 和 AI 协作的过程中,我总结出了几个大的原则:

1️⃣ Context 和 Review,给出背景信息,检查 AI 的思路或方案,远比提示词更重要。 2️⃣ 永远让 AI 先给出所有可能的解决方案思路,你再筛选和尝试。 3️⃣ 小步迭代,不要一次性让 AI 解决一个步骤太多的问题。

之前听过 Coursera 上 Google 出的 Google Prompting Essentials 专项课程,里面提到了如何编写和使用提示词,其中 Context 和 Review/Evaluate 是其中最重要的两个部分。

通常一个完整的提示词,包含 3 个部分:任务、上下文和参考。

任务 Task

这部分主要写出你要完成的事情是什么,而角色、格式、技能,算是对任务的背景补充(也算一种上下文)。

举例来说: 你是擅长做外刊阅读分析的雅思老师 -- 技能和角色 你要写一篇公众号推文,拆解一篇英语原文 -- 任务 需要提及重点词汇、长难句分析和文章逻辑分析 --结构/格式

上下文 Context

在任务之外,你还可以继续补充这个任务其他的背景信息,比如目标是什么,已经做过哪些事情,尽可能让 AI 知道它可以不用重复做哪些事,或者朝什么方向思考。

参考 Reference

如果你的任务有别人做好的方案参考,直接给 AI 会更容易获得你想要的。

而使用提示词的过程中,最重要的是这两步:评估和迭代。

评估

AI 生成的结果并不总是令人满意的,所以你不能无脑相信它,你需要有合适的评估角度和标准。

所以,为什么先让 AI 给出思路,就是为了给你一个评估的机会,避免浪费时间和 token 生成完全无法满足标准的内容。你可以通过查看它的大概思路来判断是否是你想要的,再让 AI 深入到方案细节中,提供完整的版本。

总之,现阶段和 AI 互动,你并不需要花太多时间写一个过于精美的提示词(当然,能写出来更好),只需要把 AI 当成一个你需要协作的同事,给它讲清楚背景、目标、任务,最后评估它的输出就好。

如果你不会直接对你的同事说:给我生成一个可以购物的 App,那么,也不要这样对 AI 说。

// 题外话,说起来,这个框架也适用于领导给下属布置任务,或者同事之间协作,是一个很好的沟通范本🤣

03 AI 没那么神奇,耐心很重要。

看起来这几个问题的解决步骤都很简单,其实过程中也出现过一些错误,有时候让人觉得很烦躁。不过,遵从第二点提到的原则,保持一些耐心,很快都能雨过天晴,最后实现目标的时候,总是不免感叹一下「太牛逼了」,这个耐心的过程也是很值得的。

最后

这篇文章算是对最近密集使用 AI 的一个总结和复盘。

AI 领域的大神太多,新闻太多,让人惊艳的产品也太多,但总归和我的生活工作关系不大,我这一篇主要想分享 AI 是怎样提升我的日常工作效率的,希望对你也有帮助。